#include "online.h"
#include "ui_online.h"
#include "tcpclient.h"

Online::Online(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Online)
{
    ui->setupUi(this);
}

Online::~Online()
{
    delete ui;
}

Online &Online::getInstance()
{
    static Online instance;
    return instance;
}

//设置自己用户名
void Online::setLabelUsr(QString usrname)
{
    ui->label_user->setText(usrname);
}

//显示用户
void Online::showUser(const PDU *pdu)
{
    if(pdu == NULL)
    {
        return ;
    }
    //先删除掉当前所有在线用户
    ui->lw_OnlineUsr->clear();
    //再把查询的结果显式到QListWidget上
    //写成单例不用传递这么多
    uint uiSize = pdu->uiMsgLen/32;
    char caTmp[32];
    for(uint i = 0; i<uiSize; i++)
    {
        memcpy(caTmp, (char*)(pdu->caMsg)+i*32, 32*sizeof(char));
        qcout << "向Online上添加item" << QString(caTmp);
        ui->lw_OnlineUsr->addItem(QString(caTmp));
    }
}

//显示添加好友查询结果
//返回值结果
//  return ENUM_ADDFRIEND_TYPE_EMPTY;//用户名或密码为空
//  return ENUM_ADDFRIEND_TYPE_ALWAYS;//查询到结果表明两个人已经是好友了
//  return ENUM_SEARCH_OFFLINE_TYPE;//两一个人暂时不在线, 暂时不能添加好友
//  return ENUM_ADDFRIEND_TYPE_SUCCESS;//可以添加好友
void Online::showAddFriend(const PDU *pdu)
{
    if(pdu == NULL)
    {
        qcout << "添加好友查询结果为NULL";
        return ;
    }
    switch(pdu->caData[0])
    {
    case ENUM_ADDFRIEND_TYPE_EMPTY:
    {
        ui->label_select->setText("选择用户名错");
        break;
    }
    case ENUM_ADDFRIEND_TYPE_ALWAYS:
    {
        ui->label_select->setText("已是好友");
        break;
    }
    case ENUM_SEARCH_OFFLINE_TYPE:
    {
        ui->label_select->setText("他不在线");
        break;
    }
    case ENUM_ADDFRIEND_TYPE_SUCCESS:
    {
        ui->label_select->setText("可以添加");
        break;
    }
    default:
        break;
    }

}


//添加好友槽函数
void Online::on_pb_addfriend_clicked()
{

    QListWidgetItem *m_pItemLW = ui->lw_OnlineUsr->currentItem();

    //必须添加if条件
    if(NULL != m_pItemLW)
    {
        ui->label_select->setText("等待回复!");

        QString firstName = TcpClient::getInstance().getmloginName();
        QString secondName = m_pItemLW->text();

        qcout << "自己的名字 : " << firstName;
        if(firstName == secondName)
        {
            ui->label_select->setText("选了自己");
        }
        else
        {
            qcout << "正在向服务器发送消息";
            //给TcpSocker类发送消息, 向服务器发送查询是否可以加好友的消息
            emit signal_toAddFriend(m_pItemLW->text());
        }

    }
    else
    {
        ui->label_select->setText("先选择!");
        qcout << "m_pItemLW为空";
    }
    //qcout << "选中好友" << pItem->text();

}
